home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / vh-1_5.lha / vh-1.5 / screen.h < prev    next >
C/C++ Source or Header  |  1993-05-11  |  7KB  |  224 lines

  1. /* screen.h -- interface to screen and keyboard handling */
  2.  
  3. #define MAXROWS    66    /* most lines per screen we'll try to deal with */
  4. #define MAXCOLS    132    /* most characters per line we'll essay */
  5.  
  6. #ifdef ATTMOUSE
  7. #define MOUSE        /* generic mouse handing */
  8. #endif /* ATTMOUSE */
  9.  
  10. #ifdef linux
  11. #undef BSD
  12. #endif /* linux */
  13.  
  14. #ifdef BSD
  15. #define OLDCURSES
  16. #endif /* BSD */
  17.  
  18. #ifdef CURSES
  19. #ifdef linux
  20. #include <ncurses.h>
  21. #else
  22. #include <curses.h>
  23. #endif /* linux */
  24. #else
  25. typedef    char bool;
  26. #define FALSE    0
  27. #define TRUE    1
  28. #define OK    0
  29. #define ERR    -1
  30.  
  31. /*
  32.  * This holds a character and attributes.  Below, we have to do
  33.  * some grotty things with macros and casts in case sizeof(long)
  34.  * != sizeof(int).
  35.  */
  36. typedef unsigned long chtype;    /* the idea is to force 32 bits */
  37.  
  38. extern int LINES, COLS;        /* terminal depth & width globals */
  39. extern int COLORS, COLOR_PAIRS;    /* max color range globals */
  40.  
  41. extern int initscr();    /* init screen, set LINES and COLS */
  42. extern int endwin();    /* de-initialize screen code */
  43. extern int init_pair();    /* initialize color pair */
  44. extern int clear();    /* clear screen */
  45. extern int refresh();    /* refresh real screen from virtual screen */
  46. extern int ungetch();    /* put char on queue to be grabbed by next getch() */
  47. extern int inch();    /* get char from screen's current update location */
  48. extern int getyx();    /* get current update cursor position */
  49. extern int move();    /* move update cursor to row y colum x */
  50. extern int _addch();    /* add char/attribute at update location */
  51. #define addch(c)    _addch((chtype)(c))
  52. extern int addstr();    /* write string from update location */
  53. extern int attrset();    /* set attribute (A_NORMAL, A_REVERSE, A_BOLD) */
  54. extern bool has_colors();    /* do we have color? */
  55. extern int start_color();    /* enable color support */
  56. extern int color_pair();    /* set up a color pair */    
  57. extern int napms();    /* nap for some number of milliseconds */
  58. extern void beep();    /* ring the terminal bell */
  59.  
  60. /* the (void)s are to suppress "Code has no effect" warnings */
  61. #define    mvaddch(y,x,ch)        (void)(move(y,x) == ERR ? ERR : addch(ch))
  62. #define    mvaddstr(y,x,str)    (void)(move(y,x) == ERR ? ERR : addstr(str))
  63. #endif /* CURSES */
  64.  
  65. #ifndef A_COLOR
  66. /* color defines */
  67. #define A_COLOR        0xff0000
  68. #define COLOR_PAIR(n)    ((chtype)(n) << 16)
  69. #define PAIR_NUMBER(n)    (((chtype)(n) & A_COLOR) >> 16)
  70. #define COLOR_BLACK    0
  71. #define COLOR_BLUE    1
  72. #define COLOR_GREEN    2
  73. #define COLOR_CYAN    3
  74. #define COLOR_RED    4
  75. #define COLOR_MAGENTA    5
  76. #define COLOR_YELLOW    6
  77. #define COLOR_WHITE    7
  78. #endif /* A_COLOR */
  79.  
  80. #ifndef KEY_EXIT
  81. /* special keystroke defines --- picked to coincide with curses(3) values  */
  82. #define KEY_EXIT    0551    /* not on PC keyboard */
  83. #define KEY_HELP    0553    /* not on PC keyboard */
  84. #define KEY_REFRESH    0565    /* not on PC keyboard */
  85. #define KEY_NPAGE    0522    /* PgDn */
  86. #define KEY_PPAGE    0523    /* PgUp */
  87. #define KEY_UP        0403    /* Up Arrow */
  88. #define KEY_DOWN    0402    /* Down Arrow */
  89. #define KEY_REFERENCE    0564    /* not on PC keyboard */
  90. #define KEY_ENTER    0527    /* Enter */
  91. #define KEY_RIGHT    0405    /* Right Arrow */
  92. #define KEY_LEFT    0404    /* Left Arrow */
  93. #define KEY_FIND    0552    /* not on PC keyboard */
  94. #define KEY_SFIND    0605    /* not on PC keyboard */
  95. #define KEY_SELECT    0601    /* not on PC keyboard */
  96. #define KEY_HOME    0406    /* Home */
  97. #define KEY_BEG        0542    /* not on PC keyboard */
  98. #define KEY_END        0550    /* End */
  99. #define KEY_UNDO    0630    /* not on PC keyboard */
  100. #define KEY_PRINT    0532    /* not on PC keyboard */
  101. #define KEY_FBASE    0410    /* function key base */
  102. #define KEY_F(n)    (KEY_FBASE + (n))
  103. #endif /* KEY_EXIT */
  104.  
  105. #ifndef ACS_HLINE
  106. /* alternate char set --- indices picked to coincide with curses(3) values */
  107.     /* VT100 symbols */
  108. extern unsigned char acs_map[96];
  109. #define ACS_BSSB    (acs_map[0])
  110. #define ACS_SSBB    (acs_map[1])
  111. #define ACS_BBSS    (acs_map[2])
  112. #define ACS_SBBS    (acs_map[3])
  113. #define ACS_SBSS    (acs_map[4])
  114. #define ACS_SSSB    (acs_map[5])
  115. #define ACS_SSBS    (acs_map[6])
  116. #define ACS_BSSS    (acs_map[7])
  117. #define ACS_BSBS    (acs_map[8])
  118. #define ACS_SBSB    (acs_map[9])
  119. #define ACS_SSSS    (acs_map[10])
  120. #define ACS_ULCORNER    ACS_BSSB
  121. #define ACS_LLCORNER    ACS_SSBB
  122. #define ACS_URCORNER    ACS_BBSS
  123. #define ACS_LRCORNER    ACS_SBBS
  124. #define ACS_RTEE    ACS_SBSS
  125. #define ACS_LTEE    ACS_SSSB
  126. #define ACS_BTEE    ACS_SSBS
  127. #define ACS_TTEE    ACS_BSSS
  128. #define ACS_HLINE    ACS_BSBS
  129. #define ACS_VLINE    ACS_SBSB
  130. #define ACS_PLUS    ACS_SSSS
  131. #define ACS_S1        (acs_map[11])    /* scan line 1 */
  132. #define ACS_S9        (acs_map[12])    /* scan line 9 */
  133. #define ACS_DIAMOND    (acs_map[13])    /* diamond */
  134. #define ACS_CKBOARD    (acs_map[14])    /* checker board (stipple) */
  135. #define ACS_DEGREE    (acs_map[15])    /* degree symbol */
  136. #define ACS_PLMINUS    (acs_map[16])    /* plus/minus */
  137. #define ACS_BULLET    (acs_map[17])    /* bullet */
  138.     /* Teletype 5410v1 symbols */
  139. #define ACS_LARROW    (acs_map[18])    /* arrow pointing left */
  140. #define ACS_RARROW    (acs_map[19])    /* arrow pointing right */
  141. #define ACS_DARROW    (acs_map[20])    /* arrow pointing down */
  142. #define ACS_UARROW    (acs_map[21])    /* arrow pointing up */
  143. #define ACS_BOARD    (acs_map[22])    /* board of squares */
  144. #define ACS_LANTERN    (acs_map[23])    /* lantern symbol */
  145. #define ACS_BLOCK    (acs_map[24])    /* solid square block */
  146. #endif
  147.  
  148. #ifndef A_CHARTEXT
  149. /* highlight defines */
  150. #define A_CHARTEXT    0x00007f
  151. #define A_ATTRIBUTES    0xffff00
  152. #define A_NORMAL    0x000000
  153. #define A_STANDOUT    0x000100
  154. #define A_UNDERLINE    0x000200
  155. #define A_REVERSE    0x000400
  156. #define A_BLINK        0x000800
  157. #define A_BOLD        0x001000
  158. #define A_ALTCHARSET    0x002000
  159. #endif /* A_CHARTEXT */
  160.  
  161. #ifdef OLDCURSES
  162. typedef int chtype;
  163. #define resetterm()    resetty()
  164. #define saveterm()    savetty()
  165. #define has_colors()    FALSE
  166. #define GQDEPTH     10
  167. extern int egetch(), ungetch(), attrset();
  168. #endif /* OLDCURSES */
  169.  
  170. #ifdef linux
  171. #define resetterm()    resetty()
  172. #define saveterm()    savetty()
  173. #define has_colors()    FALSE
  174. #endif
  175.  
  176. /*
  177.  * Mouse event handing.  The KEY_MOUSE define has to be distinct from
  178.  * any keystroke we might want to process.
  179.  *
  180.  * SVr4 defines KEY_MOUSE; SVr3 does not.  If we don't get it from the
  181.  * curses.h file, define it here.
  182.  */
  183. #ifndef KEY_MOUSE
  184. #define KEY_MOUSE    0631
  185.  
  186. #define A_BUTTON_CHANGED    0x0f    /* any change in button status? */
  187. #define BUTTON1_PRESSED        0x01    /* left mouse button down */
  188. #define BUTTON1_RELEASED    0x02    /* left mouse button release */
  189. #define BUTTON3_PRESSED        0x04    /* right mouse button down */
  190. #define BUTTON3_RELEASED    0x08    /* right mouse button up */
  191. #endif /* KEY_MOUSE */
  192.  
  193. /* we'll define these */
  194. extern int egetch();        /* get mouse event or character, no echo */
  195. extern void readscr();        /* get content of given region */
  196. extern void mouse_init();    /* initialize mouse */
  197. extern void mouse_move();    /* move mouse hot spot */
  198. extern int mouse_status();    /* get mouse location and button state */
  199. extern void mouse_show();    /* show mouse cursor */
  200. extern void mouse_hide();    /* hide mouse cursor */
  201. extern void mouse_color();    /* show mouse cursor in color? */
  202.  
  203. /* special coordinate values returned by mouse_status() */
  204. #define CMDLINE        -1    /* command line of application window */
  205. #define THUMBCOL    -1    /* thumb column of application window */
  206.  
  207. #ifdef AMIGA
  208. #define     F_OK    0
  209. typedef short chtype;
  210. #define GQDEPTH     10
  211. #endif /* AMIGA */
  212.   
  213. /* handy names for special characters */
  214. #define CTL(c)    ((c) & 0x1f)
  215. #define TAB    0x09    /* tab */
  216. #define BS    0x08    /* backspace */
  217. #define CR    0x0d    /* carriage return */
  218. #define LF    0x0a    /* line feed */
  219. #define ESC    0x1b    /* escape */
  220. #define SP    0x20    /* space */
  221. #define DEL    0x7f    /* delete */
  222.  
  223. /* screen.h ends here */
  224.